package eu.catengine.common.util;

/**
 * Prosty licznik klatek na sekundę.
 * 
 * @author mbienkowski
 */
public class FPSCounter
{
    private static long mStartTime;
    private static long mEndTime;
    private static long mFrameTimes = 0;
    private static short mFrames = 0;
    private static short mFPS = 0;

    /**
     * Rozpoczyna pracę licznika klatek.<br>
     * <br>
     * Najwygodniej wywołać metodą w konstruktorze sceny.
     */
    public final static void startCounter()
    {
	mStartTime = System.currentTimeMillis();
    }

    /**
     * Metoda aktualizująca licnzik klatek.<br><br>
     * Wywoływana w metodzie <code>update(...)</code> dla sceny.
     */
    public final static void update()
    {
	mFrames++;
	mEndTime = System.currentTimeMillis();
	mFrameTimes = mEndTime - mStartTime;

	if (mFrameTimes >= 1000)
	{
	    mFPS = mFrames;
	    mFrames = 0;
	    mFrameTimes = 0;
	    mStartTime = mEndTime;
	}
    }

    /**
     * Zwraca aktualną ilość klatek na sekundę.
     */
    public static int getFPS()
    {
	return mFPS;
    }
}
